# 7 用户输入 和 while循环

# 7.1 input() 等待用户输入
# msg = input("请输入（提示信息）:")
# print("输出: %s" % msg)

# 数字处理：
# int() 函数用于将一个字符串或数字转换为整型。
print("不传入参数，返回: %s" % int())
print("传入整数 int(3)，返回: %s" % int(3))
print("传入浮点数 int(3.6)，返回: %s" % int(3.6))
print("传入负数 int(-3.6)，返回: %s" % int(-3.6))
print("传入16进制数,该数字需要使用字符串 int('12',16)，返回: %s" % int('12', 16))
print("传入16进制数,该数字需要使用字符串 int('0xa',16)，返回: %s" % int('0xa', 16))
print("传入8进制数,该数字需要使用字符串 int('10',0)，返回: %s" % int('10', 8))

# int('9',2)
print("使用int(str,base),str要符合base规则: int('9',2)出错，二进制没有9")

# int('3.14',8)
# int("1.2")    # 默认base为10。
print("int(str,base)中，str需要是整数，否则报错")

print('\n')

# 判断一个字符串是否可以转换为数字
# 1. isdigit()
print('isdigit()>>>')
# True: Unicode数字，byte数字（单字节），全角数字（双字节）
# False: 汉字数字，罗马数字，小数, 负数
print("判断整数: '123'.isdigit() : %s" % '123'.isdigit())
print("判断小数: '123.12'.isdigit() : %s" % '123.12'.isdigit())
print("判断负数: '-123'.isdigit() : %s" % '-123'.isdigit())
print("判断Unicode数字: '\u0030'.isdigit() : %s" % '\u0030'.isdigit())
print("判断Unicode汉字数字: '\u4e00'.isdigit() : %s" % '\u4e00'.isdigit())
print("判断罗马数字: 'IV'.isdigit() : %s" % 'IV'.isdigit())
print("判断汉字数字: '四'.isdigit() : %s" % '四'.isdigit())
print("判断半角数字: '\u0031'.isdigit() : %s" % '\u0031'.isdigit())
print("判断全角数字: '\uff11'.isdigit() : %s" % '\uff11'.isdigit())
print("None.isdigit() : 报错")
# print("None.isdigit() : %s" % None.isdigit())

print()

# 2. isdecimal()
print("isdecimal()>>>")
# True: Unicode数字，byte数字（单字节），全角数字（双字节）
# False: 汉字数字，罗马数字，小数, 负数
print("判断整数: '123'.isdecimal() : %s" % '123'.isdecimal())
print("判断小数: '123.12'.isdecimal() : %s" % '123.12'.isdecimal())
print("判断负数: '-123'.isdecimal() : %s" % '-123'.isdecimal())
print("判断Unicode数字: '\u0030'.isdecimal() : %s" % '\u0030'.isdecimal())
print("判断Unicode汉字数字: '\u4e00'.isdecimal() : %s" % '\u4e00'.isdecimal())
print("判断罗马数字: 'IV'.isdecimal() : %s" % 'IV'.isdecimal())
print("判断汉字数字: '四'.isdecimal() : %s" % '四'.isdecimal())
print("判断半角数字: '\u0031'.isdecimal() : %s" % '\u0031'.isdecimal())
print("判断全角数字: '\uff11'.isdecimal() : %s" % '\uff11'.isdecimal())

print()

# 3. isnumeric()
print("isnumeric()>>>")
# True: Unicode数字，byte数字（单字节），全角数字（双字节）, 汉字数字
# False: 罗马数字，小数, 负数
print("判断整数: '123'.isnumeric() : %s" % '123'.isnumeric())
print("判断小数: '123.12'.isnumeric() : %s" % '123.12'.isnumeric())
print("判断负数: '-123'.isnumeric() : %s" % '-123'.isnumeric())
print("判断Unicode数字: '\u0030'.isnumeric() : %s" % '\u0030'.isnumeric())
print("判断Unicode汉字数字: '\u4e00'.isnumeric() : %s" % '\u4e00'.isnumeric())
print("判断罗马数字: 'IV'.isnumeric() : %s" % 'IV'.isnumeric())
print("判断汉字数字: '四'.isnumeric() : %s" % '四'.isnumeric())
print("判断半角数字: '\u0031'.isnumeric() : %s" % '\u0031'.isnumeric())
print("判断全角数字: '\uff11'.isnumeric() : %s" % '\uff11'.isnumeric())

print()

# 4. 自定义判断函数
print("自定义方法>>>")
# True: Unicode数字，byte数字（单字节），全角数字（双字节）, 汉字数字，小数, 负数
# False: 罗马数字


def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        pass

    try:
        import unicodedata
        unicodedata.numeric(s)
        return True
    except (TypeError, ValueError):
        pass

    return False


print("判断整数: is_number('123') : %s" % is_number('123'))
print("判断小数: is_number('123.12') : %s" % is_number('123.12'))
print("判断负数: is_number('-123') : %s" % is_number('-123'))
print("判断Unicode数字: is_number('\u0030') : %s" % is_number('\u0030'))
print("判断Unicode汉字数字: is_number('\u4e00') : %s" % is_number('\u4e00'))
print("判断罗马数字: is_number('IV') : %s" % is_number('IV'))
print("判断汉字数字: is_number('四') : %s" % is_number('四'))
print("判断半角数字: is_number() : %s" % is_number('\u0031'))
print("判断全角数字: is_number() : %s" % is_number('\uff11'))

print()

# 7.2 while循环
# break 跳出循环
# continue 跳至下一次循环
count = 0
while count <= 100:
    print(count, end=',')
    count += 1
    if count == 10:
        break

print()
